package cn.com.pg.b2b.pd.truck.appointment.management.service.model.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 中转线路 DTO
 * </p>
 *
 * @author 王开琦
 * @since 2023-06-08
 */
public class LineDTO implements Serializable {

    private static final long serialVersionUID = 1L;


    /**
     * 是否有效：0-不可用，1-可用
     */
    private Integer isValidFlag;

    /**
     * 线路ID
     */
    @TableId
    private Integer lineId;

    /**
     * 承运商编码
     */
    private String carrierCode;

    /**
     * 线路名称
     */
    private String lineName;

    /**
     * 发货地
     */
    private Integer shippingOrgId;

    /**
     * 收货地
     */
    private Integer receivingOrgId;

    /**
     * 运输类型：汽运，火运...（字典表）
     */
    private Integer transportType;

    /**
     * 目标运输时长（小时）
     */
    private BigDecimal targetTransHour;

    /**
     * OTD天数
     */
    private BigDecimal otd;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 从卸货出库到GR的时长 单位：天
     */
    private BigDecimal grLeadtime;

    /**
     * 单位为：吨，直接填写具体数字
     */
    private BigDecimal moqTon;

    /**
     * 单位为：立方米，直接填写相关数字
     */
    private BigDecimal moqCbm;

    /**
     * 所属区域信息
     */
    private String region;

    /**
     * 卸货是否需要预约 0：不需预约，1：需要预约
     */
    private Integer isUnloadAutoAppointmentFalg;

    /**
     * 计费吨数量
     */
    private Integer moqRevenueTon;

    /**
     * 从Meet MOQ到GPS判断到达卸货方的时长 IOTD单位：天
     */
    private BigDecimal iOtd;

    /**
     * 订单从shipmentDay日期到卸货GPS到达时间 天
     */
    private Integer pdt;

    /**
     * 订单MOQ waiting 等待时间 （从下单到满足MOQ平均时间） 单位：天
     */
    private Integer moqWaitingTime;

    /**
     * 车辆提货入库等待时间(提check in车辆入库时间-货GPS到达) 单位：小时
     */
    private Integer loadWait;

    /**
     * 车辆提货时长（车辆离库时间-提货进库） 单位：小时
     */
    private Integer loadTime;

    /**
     * 车辆卸货入库等待时间(卸check in车辆入库时间-货GPS到达) 单位：小时
     */
    @TableField("unLoad_wait")
    private Integer unloadWait;

    /**
     * 车辆提货时长（车辆离库时间-提货进库） 单位：小时
     */
    @TableField("unLoad_time")
    private Integer unloadTime;

    /**
     * 车辆GPS抵达卸货区域到GR时长 小时
     */
    private Integer atr;

    /**
     * （IOTD小于24小时为短途）长短途 1:短途  2：长途
     */
    private Integer haulType;

    /**
     * 距离
     */
    private Integer gpsDistance;

    /**
     * GZ2020 X小时限制
     */
    private BigDecimal xTimeLimit;

    /**
     * 提货出库后卸货自动预约时间（小时）
     */
    private BigDecimal unloadAutoAppointmentHour;

    /**
     * 是否开启紧急补货绿色通道 1开启 0不开启
     */
    private Integer isOpenQuickCheck;

    /**
     * 是否特殊预约线路
     */
    private Integer isSpecialBooking;



    public Integer getIsValidFlag() {
        return isValidFlag;
    }

    public void setIsValidFlag(Integer isValidFlag) {
        this.isValidFlag = isValidFlag;
    }

    public Integer getLineId() {
        return lineId;
    }

    public void setLineId(Integer lineId) {
        this.lineId = lineId;
    }

    public String getCarrierCode() {
        return carrierCode;
    }

    public void setCarrierCode(String carrierCode) {
        this.carrierCode = carrierCode;
    }

    public String getLineName() {
        return lineName;
    }

    public void setLineName(String lineName) {
        this.lineName = lineName;
    }

    public Integer getShippingOrgId() {
        return shippingOrgId;
    }

    public void setShippingOrgId(Integer shippingOrgId) {
        this.shippingOrgId = shippingOrgId;
    }

    public Integer getReceivingOrgId() {
        return receivingOrgId;
    }

    public void setReceivingOrgId(Integer receivingOrgId) {
        this.receivingOrgId = receivingOrgId;
    }

    public Integer getTransportType() {
        return transportType;
    }

    public void setTransportType(Integer transportType) {
        this.transportType = transportType;
    }

    public BigDecimal getTargetTransHour() {
        return targetTransHour;
    }

    public void setTargetTransHour(BigDecimal targetTransHour) {
        this.targetTransHour = targetTransHour;
    }

    public BigDecimal getOtd() {
        return otd;
    }

    public void setOtd(BigDecimal otd) {
        this.otd = otd;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public BigDecimal getGrLeadtime() {
        return grLeadtime;
    }

    public void setGrLeadtime(BigDecimal grLeadtime) {
        this.grLeadtime = grLeadtime;
    }

    public BigDecimal getMoqTon() {
        return moqTon;
    }

    public void setMoqTon(BigDecimal moqTon) {
        this.moqTon = moqTon;
    }

    public BigDecimal getMoqCbm() {
        return moqCbm;
    }

    public void setMoqCbm(BigDecimal moqCbm) {
        this.moqCbm = moqCbm;
    }

    public String getRegion() {
        return region;
    }

    public void setRegion(String region) {
        this.region = region;
    }

    public Integer getIsUnloadAutoAppointmentFalg() {
        return isUnloadAutoAppointmentFalg;
    }

    public void setIsUnloadAutoAppointmentFalg(Integer isUnloadAutoAppointmentFalg) {
        this.isUnloadAutoAppointmentFalg = isUnloadAutoAppointmentFalg;
    }

    public Integer getMoqRevenueTon() {
        return moqRevenueTon;
    }

    public void setMoqRevenueTon(Integer moqRevenueTon) {
        this.moqRevenueTon = moqRevenueTon;
    }

    public BigDecimal getiOtd() {
        return iOtd;
    }

    public void setiOtd(BigDecimal iOtd) {
        this.iOtd = iOtd;
    }

    public Integer getPdt() {
        return pdt;
    }

    public void setPdt(Integer pdt) {
        this.pdt = pdt;
    }

    public Integer getMoqWaitingTime() {
        return moqWaitingTime;
    }

    public void setMoqWaitingTime(Integer moqWaitingTime) {
        this.moqWaitingTime = moqWaitingTime;
    }

    public Integer getLoadWait() {
        return loadWait;
    }

    public void setLoadWait(Integer loadWait) {
        this.loadWait = loadWait;
    }

    public Integer getLoadTime() {
        return loadTime;
    }

    public void setLoadTime(Integer loadTime) {
        this.loadTime = loadTime;
    }

    public Integer getUnloadWait() {
        return unloadWait;
    }

    public void setUnloadWait(Integer unloadWait) {
        this.unloadWait = unloadWait;
    }

    public Integer getUnloadTime() {
        return unloadTime;
    }

    public void setUnloadTime(Integer unloadTime) {
        this.unloadTime = unloadTime;
    }

    public Integer getAtr() {
        return atr;
    }

    public void setAtr(Integer atr) {
        this.atr = atr;
    }

    public Integer getHaulType() {
        return haulType;
    }

    public void setHaulType(Integer haulType) {
        this.haulType = haulType;
    }

    public Integer getGpsDistance() {
        return gpsDistance;
    }

    public void setGpsDistance(Integer gpsDistance) {
        this.gpsDistance = gpsDistance;
    }

    public BigDecimal getxTimeLimit() {
        return xTimeLimit;
    }

    public void setxTimeLimit(BigDecimal xTimeLimit) {
        this.xTimeLimit = xTimeLimit;
    }

    public BigDecimal getUnloadAutoAppointmentHour() {
        return unloadAutoAppointmentHour;
    }

    public void setUnloadAutoAppointmentHour(BigDecimal unloadAutoAppointmentHour) {
        this.unloadAutoAppointmentHour = unloadAutoAppointmentHour;
    }

    public Integer getIsOpenQuickCheck() {
        return isOpenQuickCheck;
    }

    public void setIsOpenQuickCheck(Integer isOpenQuickCheck) {
        this.isOpenQuickCheck = isOpenQuickCheck;
    }

    public Integer getIsSpecialBooking() {
        return isSpecialBooking;
    }

    public void setIsSpecialBooking(Integer isSpecialBooking) {
        this.isSpecialBooking = isSpecialBooking;
    }

    @Override
    public String toString() {
        return "Line{" +
        "lineId=" + lineId +
        ", carrierCode=" + carrierCode +
        ", lineName=" + lineName +
        ", shippingOrgId=" + shippingOrgId +
        ", receivingOrgId=" + receivingOrgId +
        ", transportType=" + transportType +
        ", targetTransHour=" + targetTransHour +
        ", otd=" + otd +
        ", remark=" + remark +
        ", grLeadtime=" + grLeadtime +
        ", moqTon=" + moqTon +
        ", moqCbm=" + moqCbm +
        ", region=" + region +
        ", isUnloadAutoAppointmentFalg=" + isUnloadAutoAppointmentFalg +
        ", moqRevenueTon=" + moqRevenueTon +
        ", iOtd=" + iOtd +
        ", pdt=" + pdt +
        ", moqWaitingTime=" + moqWaitingTime +
        ", loadWait=" + loadWait +
        ", loadTime=" + loadTime +
        ", unloadWait=" + unloadWait +
        ", unloadTime=" + unloadTime +
        ", atr=" + atr +
        ", haulType=" + haulType +
        ", gpsDistance=" + gpsDistance +
        ", xTimeLimit=" + xTimeLimit +
        ", unloadAutoAppointmentHour=" + unloadAutoAppointmentHour +
        ", isOpenQuickCheck=" + isOpenQuickCheck +
        ", isSpecialBooking=" + isSpecialBooking +
        "}";
    }
}
